/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package co.edu.senaclem.logica;

import co.edu.senaclem.modelo.Area;
import co.edu.senaclem.modelo.Turno;
import co.edu.senaclem.persistencia.ITurnoDAO;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;

/**
 *
 * @author anfeles
 */
@Stateless
public class TurnoLogica implements TurnoLogicaLocal {

    @EJB
    private ITurnoDAO turnoDAO;
    
    
    @Override
    public void modificar(Turno turno) throws Exception {
        if(turno==null) {
            throw new Exception("El Turno es Nulo!");
        }
        
        Turno turnoEntity=turnoDAO.consultarPorId(turno.getCodigo());
        if(turnoEntity==null)
        {
            throw new Exception("El Turno a Modificar No Existe!");
        }
        
        turnoDAO.modificar(turno);
        
    }

    @Override
    public int insertar(Turno turno) throws Exception {
        //validaciones
        if(turno==null) {
            throw new Exception("El Turno es Nulo!");
        }
        
        if(turno.getDocumentoCliente()==null || turno.getDocumentoCliente().getDocumento().getDocumento()==0) {
            throw new Exception("La Identificación es Obligatoria!");
        }
        
        if(turno.getArea()==null || turno.getArea().getCodigo()==-1) {
            throw new Exception("El Area es Obligatoria!");
        }    
        
        if(turno.getMotivo()==null || turno.getMotivo().equals("")==true) {
            throw new Exception("El Motivo es Obligatorio!");
        }              
        //consecutivo de turno de acuerdo al dia
        int numero=turnoDAO.consultarNumeroTurno(turno.getFecha(), turno.getArea().getCodigo())+1;        
        turno.setNumero(numero);
        
        turnoDAO.insertar(turno);
        
        return numero; 
    }

    @Override
    public Turno consultarPorId(int codigo) throws Exception {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
  
    @Override
    public List<Turno> consultar() throws Exception {
        return turnoDAO.consultar();
    }
    
    @Override
    public List<Turno> consultarTurnos() throws Exception {
        return turnoDAO.consultar("select * from turno order by fechaturno desc");
    }
           
    @Override
    public List<Turno> consultarTurnosArea(Area area,String fechaSistema) throws Exception {
        if(area==null || area.getCodigo()==-1)
        {
            throw new Exception("El Area es Nula!");
        }
        
        if(fechaSistema.equals(""))
        {
            throw new Exception("Fecha del Sistema No Válida!");
        }
        
        return turnoDAO.consultarTurnosArea(area,fechaSistema);
    }
    
}
